home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / m2 / cat3src / cat / zsearchd.i < prev   
Text File  |  1997-10-26  |  37KB  |  968 lines

  1. IMPLEMENTATION MODULE ZSearchDial;
  2.  
  3. (*$H+*)
  4. (*$Z+*)
  5.  
  6. FROM SYSTEM       IMPORT ADDRESS, ADR;
  7. FROM Void         IMPORT v;
  8. FROM UserInformation IMPORT UserBLK;
  9.  
  10. IMPORT MagicAES;
  11. IMPORT MagicStrings;
  12. IMPORT mtUtils;
  13. IMPORT mtDials;
  14. IMPORT mtAlerts;
  15. IMPORT MTE;
  16. IMPORT mtPopups;
  17. IMPORT CatHelp;
  18. IMPORT VDIUtil;
  19. IMPORT SearchHelp;
  20. IMPORT Varnames;
  21. IMPORT ConfVars;
  22. IMPORT CatGlobal;
  23.  
  24. IMPORT WinDials;
  25.  
  26. IMPORT CatTypes;
  27. FROM CatTypes     IMPORT Trick;
  28.  
  29. IMPORT MausTauschrsc;
  30. (*IMPORT InOut;*)
  31.  
  32. VAR theForm,
  33.     smallForm   : ADDRESS;
  34.     objPtr      : mtUtils.tObjcTree;
  35.     smallPtr    : mtUtils.tObjcTree;
  36.     searchwhere,
  37.     logical     : ADDRESS;
  38.     moreOptions : BOOLEAN;
  39.     lastKonfig  : INTEGER;
  40.     sBit1, sBit2, sBit3,
  41.     sBit4, sBit5, sBit6 : BITSET;
  42.     l                   : CARDINAL;
  43.     scrapKonf           : SearchHelp.SearchRecordType;
  44.     
  45.   PROCEDURE SetItem(tree : ADDRESS; item : INTEGER; b : BOOLEAN);
  46.   BEGIN
  47.     IF b THEN
  48.       mtUtils.InclState(tree, item, MagicAES.SELECTED);
  49.     ELSE
  50.       mtUtils.ExclState(tree, item, MagicAES.SELECTED);
  51.     END;
  52.   END SetItem;
  53.  
  54. VAR init : BOOLEAN;
  55.  
  56. TYPE     keyArrayType = ARRAY [0..11] OF INTEGER;
  57.  
  58. CONST    keyArray = keyArrayType{38, 33, 23, 20, 32, 37, 48, 46, 45, 47, 50, 0};
  59. CONST    numArray = keyArrayType{2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 0 };
  60.  
  61. PROCEDURE InitMenuStr():BOOLEAN;
  62. VAR obj : mtUtils.tObjcTree;
  63.     t   : Trick;
  64. BEGIN
  65.   IF init THEN
  66.     ConfVars.GetConfDefBool(cMoreOptions, moreOptions, FALSE);
  67.     obj := MausTauschrsc.TreeAddr^[MausTauschrsc.suchbox];
  68.     obj^[MausTauschrsc.searchst1].obSpec.TedPtr^.tePtext^[0] := '@';
  69.     obj^[MausTauschrsc.searchst2].obSpec.TedPtr^.tePtext^[0] := '@';
  70.     obj^[MausTauschrsc.searchst3].obSpec.TedPtr^.tePtext^[0] := '@';
  71.     obj^[MausTauschrsc.searchst4].obSpec.TedPtr^.tePtext^[0] := '@';
  72.  
  73.     obj := MausTauschrsc.TreeAddr^[MausTauschrsc.smallsuchbox];
  74.     obj^[MausTauschrsc.smsearchstr].obSpec.TedPtr^.tePtext^[0] := '@';
  75.  
  76.     theForm     := MausTauschrsc.TreeAddr^[MausTauschrsc.suchbox];
  77.     searchwhere := MausTauschrsc.TreeAddr^[MausTauschrsc.searchselecttext];
  78.     logical     := MausTauschrsc.TreeAddr^[MausTauschrsc.searchselectlogi];
  79.     smallForm   := MausTauschrsc.TreeAddr^[MausTauschrsc.smallsuchbox];
  80.  
  81.     init := FALSE;    
  82.     RETURN TRUE (* mtDials.NewDial(theForm) & mtDials.NewDial(flagBox)*);
  83.   ELSE
  84.     RETURN TRUE
  85.   END;
  86. END InitMenuStr;
  87.  
  88.   PROCEDURE SetBits(tree : ADDRESS; set, clear : BITSET; start, end : CARDINAL);
  89.   VAR z : CARDINAL;
  90.       newState : INTEGER;
  91.   BEGIN
  92.     FOR z := start TO end DO
  93.       IF (z-start IN set) THEN newState := mtUtils.SETNEW
  94.       ELSIF (z-start IN clear) THEN newState := mtUtils.CLEAR
  95.       ELSE newState := mtUtils.NOCHANGE
  96.       END;
  97.       mtUtils.SetThreeState (tree, z, newState);
  98.     END;
  99.   END SetBits;
  100.  
  101.   PROCEDURE SetThem(tree : ADDRESS;
  102.                 VAR set1, clear1, set2, clear2 : BITSET;
  103.                     start1, end1, start2, end2 : INTEGER);
  104.   BEGIN
  105.     SetBits(tree, set1, clear1, start1, end1);
  106.     SetBits(tree, set2, clear2, start2, end2);
  107. (*    SetBits(tree, sBit4, sBit5, MausTauschrsc.stflgtop, MausTauschrsc.stflgbot); *)
  108.   END SetThem;
  109.  
  110.   PROCEDURE GetBits (tree : ADDRESS; start, end : CARDINAL; state : INTEGER):BITSET;
  111.   VAR z : CARDINAL; b : BITSET;
  112.   BEGIN
  113.     b := {};
  114.     FOR z := start TO end DO
  115.       IF mtUtils.GetThreeState (tree, z) = state THEN INCL(b, z-start) END;
  116.     END;
  117.     RETURN b
  118.   END GetBits;
  119.  
  120.   PROCEDURE GetThem(tree : ADDRESS; 
  121.                 VAR set1, clear1, set2, clear2 : BITSET;
  122.                     start1, end1, start2, end2 : INTEGER);
  123.   BEGIN
  124.     set1   := GetBits (tree, start1, end1, mtUtils.SETNEW);
  125.     clear1 := GetBits (tree, start1, end1, mtUtils.CLEAR);
  126.     set2   := GetBits (tree, start2, end2, mtUtils.SETNEW);
  127.     clear2 := GetBits (tree, start2, end2, mtUtils.CLEAR);
  128.   END GetThem;
  129.  
  130. TYPE searchEnv = RECORD
  131.                     suchVar     : SearchHelp.SearchRecordType;
  132.                     forList     : BOOLEAN;
  133.                     exitBut     : INTEGER;
  134.                   END;
  135.      searchEnvPtr = POINTER TO searchEnv;
  136.  
  137. PROCEDURE GetStr(objPtr : mtUtils.tObjcTree; item : INTEGER;VAR str : ARRAY OF CHAR);
  138. BEGIN
  139.   mtUtils.ObjcString (objPtr, item, str);
  140.   IF str[0] = '@'
  141.   THEN
  142.     MagicStrings.Assign('',str);
  143.   END;
  144. END GetStr;
  145.  
  146. PROCEDURE SetStr(objPtr : mtUtils.tObjcTree;item : INTEGER;VAR str : ARRAY OF CHAR);
  147. BEGIN
  148.   mtUtils.SetObjcString(objPtr, item, str);
  149. END SetStr;
  150.  
  151. PROCEDURE isSelect(tree : ADDRESS; item : INTEGER):BOOLEAN;
  152. BEGIN
  153.   RETURN mtUtils.InState(tree, item, MagicAES.SELECTED)
  154. END isSelect;
  155.  
  156. PROCEDURE Switch(set : INTEGER; b : BOOLEAN);
  157. BEGIN
  158.   SetItem(theForm, set, b);
  159.   WinDials.WinDialDraw(theForm, set, 0, v.r, FALSE);
  160. END Switch;
  161.  
  162. PROCEDURE SetXXString (tree  : ADDRESS; obj: INTEGER;
  163.                        sTree : ADDRESS; idx: INTEGER);
  164. VAR selStr  : ARRAY [0..40] OF CHAR;
  165. BEGIN
  166.   mtUtils.ObjcString (sTree, idx+1, selStr);
  167.   MagicStrings.Delete(selStr, 0, 1);
  168.   mtUtils.SetObjcString (tree, obj, selStr);
  169. END SetXXString;
  170.  
  171. PROCEDURE SetYYString(obj: INTEGER; wo : INTEGER);
  172. (* Ich weiž, bl”der Name.. :-) *)
  173. BEGIN
  174.   SetXXString(theForm, obj, searchwhere, wo);
  175. END SetYYString;
  176.  
  177. PROCEDURE SetZZString(obj: INTEGER; verkn : INTEGER);
  178. (* Ich weiž, auch ein bl”der Name.. :-) *)
  179. BEGIN
  180.   SetXXString(theForm, obj, logical, verkn);
  181. END SetZZString;
  182.  
  183. PROCEDURE SetPopupStrings(VAR suchVar : SearchHelp.SearchRecordType);
  184. (* Inhalte der Popupfelder gem„ž der Eingabeparameter wo0..wo3 und verkn0..verkn2 setzen *)
  185. VAR t : Trick;
  186. BEGIN
  187.   SetYYString(MausTauschrsc.where1, suchVar.wo[0]);
  188.   SetYYString(MausTauschrsc.where2, suchVar.wo[1]);
  189.   SetYYString(MausTauschrsc.where3, suchVar.wo[2]);
  190.   SetYYString(MausTauschrsc.where4, suchVar.wo[3]);
  191.   (* Ge„ndert 17.8.93 by DS: Mit SetXState ist das sch”ner und krzer *)
  192.   VDIUtil.SetXState (objPtr, MausTauschrsc.where1, suchVar.wo[0]);
  193.   VDIUtil.SetXState (objPtr, MausTauschrsc.where2, suchVar.wo[1]);
  194.   VDIUtil.SetXState (objPtr, MausTauschrsc.where3, suchVar.wo[2]);
  195.   VDIUtil.SetXState (objPtr, MausTauschrsc.where4, suchVar.wo[3]);
  196.  
  197.   SetZZString(MausTauschrsc.logical1, suchVar.verkn[0]);
  198.   SetZZString(MausTauschrsc.logical2, suchVar.verkn[1]);
  199.   SetZZString(MausTauschrsc.logical3, suchVar.verkn[2]);
  200.   
  201.   VDIUtil.SetXState (objPtr, MausTauschrsc.logical1, suchVar.verkn[0]);
  202.   VDIUtil.SetXState (objPtr, MausTauschrsc.logical2, suchVar.verkn[1]);
  203.   VDIUtil.SetXState (objPtr, MausTauschrsc.logical3, suchVar.verkn[2]);
  204. END SetPopupStrings;
  205.  
  206. PROCEDURE GetPopupStrings(VAR suchVar : SearchHelp.SearchRecordType);
  207. (* Inhalte der Popupfelder gem„ž der Eingabeparameter wo0..wo3 und verkn0..verkn2 setzen *)
  208. VAR t : Trick;
  209. BEGIN
  210.   (* Auch hier umgestellt auf GetXState, ist krzer *)
  211.   suchVar.wo[0] := VDIUtil.GetXState (objPtr, MausTauschrsc.where1);
  212.   suchVar.wo[1] := VDIUtil.GetXState (objPtr, MausTauschrsc.where2);
  213.   suchVar.wo[2] := VDIUtil.GetXState (objPtr, MausTauschrsc.where3);
  214.   suchVar.wo[3] := VDIUtil.GetXState (objPtr, MausTauschrsc.where4);
  215.   suchVar.verkn[0] := VDIUtil.GetXState (objPtr, MausTauschrsc.logical1);
  216.   suchVar.verkn[1] := VDIUtil.GetXState (objPtr, MausTauschrsc.logical2);
  217.   suchVar.verkn[2] := VDIUtil.GetXState (objPtr, MausTauschrsc.logical3);
  218. END GetPopupStrings;
  219.  
  220. PROCEDURE ValidateSearchOpts(exit: INTEGER): BOOLEAN;
  221. BEGIN
  222.   (* Nur bei grožer Suchbox: Flageinstellungen berprfen *)
  223.   IF moreOptions &
  224.      ( (exit = MausTauschrsc.sok) OR
  225.        (exit = MausTauschrsc.searchstartback) OR
  226.        (exit = MausTauschrsc.searchstartahead)
  227.      ) THEN
  228.     GetThem(theForm,
  229.             sBit1, sBit2, sBit4, sBit5,
  230.             MausTauschrsc.sflgtop, MausTauschrsc.sflgbot,
  231.             MausTauschrsc.stflgtop, MausTauschrsc.stflgbot);
  232.     IF (l = 0) & ~isSelect(theForm, MausTauschrsc.sforflag) THEN
  233.       MTE.info (MTE.emptySearchStr);
  234.       RETURN FALSE;
  235.     END;
  236.     (* Anzeige und change aus?, nur meckern, falls nicht schon neue Runde verordnet *)
  237.     IF ~isSelect(theForm, MausTauschrsc.showmess) & ~isSelect(theForm, MausTauschrsc.ssetflag) THEN
  238.       MTE.info (MTE.noSearchAction);
  239.       RETURN FALSE;
  240.     END;
  241.     IF ~isSelect (theForm, MausTauschrsc.salltext) & ~isSelect (theForm, MausTauschrsc.sforflag)
  242.     THEN
  243.       MTE.info (MTE.noSearchFunc);
  244.       RETURN FALSE;
  245.     END;
  246.     IF isSelect(theForm, MausTauschrsc.sforflag) THEN
  247.       sBit3 := sBit1 * sBit2;
  248.       (* leere Suchmaske *)
  249.       IF (sBit1 +sBit2 = {}) THEN
  250.         MTE.info (MTE.emptySearchMask);
  251.         RETURN FALSE;
  252.       END;
  253.     END;
  254.     IF isSelect(theForm, MausTauschrsc.ssetflag) THEN
  255.       sBit6 := sBit4 * sBit5;
  256.      (* leere Setzmaske *)
  257.       IF (sBit4 +sBit5 = {}) THEN
  258.         MTE.info (MTE.emptySetMask);
  259.         RETURN FALSE;
  260.       END;
  261.     END;
  262.     
  263.     (* Jetzt noch Suchstring prfen *)
  264.     IF (l > 0) & (isSelect (theForm, MausTauschrsc.salltext)) (* OR ~moreOptions *)
  265.     THEN
  266.       (* moreOptions ausgeklammert, da der Teil hier eh nur durchlaufen wird,
  267.        * wenn moreOptions angeschaltet ist!
  268.        *)
  269.       GetStr (objPtr, MausTauschrsc.searchst1, scrapKonf.searchStr[0]);
  270.       IF ~SearchHelp.IsValidSearch (scrapKonf.searchStr[0])
  271.       THEN
  272.         MTE.info (MTE.noSearchStr);
  273.         RETURN FALSE
  274.       END;
  275.       GetStr (objPtr, MausTauschrsc.searchst2, scrapKonf.searchStr[1]);
  276.       IF (MagicStrings.Length (scrapKonf.searchStr[1]) > 0)
  277.        & ~SearchHelp.IsValidSearch (scrapKonf.searchStr[1])
  278.       THEN
  279.         MTE.info (MTE.noSearchStr);
  280.         RETURN FALSE
  281.       END;
  282.       GetStr (objPtr, MausTauschrsc.searchst3, scrapKonf.searchStr[2]);
  283.       IF (MagicStrings.Length (scrapKonf.searchStr[2]) > 0)
  284.        & ~SearchHelp.IsValidSearch (scrapKonf.searchStr[2])
  285.       THEN
  286.         MTE.info (MTE.noSearchStr);
  287.         RETURN FALSE
  288.       END;
  289.       GetStr (objPtr, MausTauschrsc.searchst4, scrapKonf.searchStr[3]);
  290.       IF (MagicStrings.Length (scrapKonf.searchStr[3]) > 0)
  291.        & ~SearchHelp.IsValidSearch (scrapKonf.searchStr[3])
  292.       THEN
  293.         MTE.info (MTE.noSearchStr);
  294.         RETURN FALSE
  295.       END;
  296.  
  297.       (*
  298.       (* Jetzt der eigentliche Test *)
  299.       WHILE ((scrapKonf.searchStr[0,0] = '*') OR (scrapKonf.searchStr[0,0] = '?')) & 
  300.             (MagicStrings.Length (scrapKonf.searchStr[0]) > 0) DO
  301.         MagicStrings.Delete (scrapKonf.searchStr[0], 0, 1);
  302.         IF MagicStrings.Length (scrapKonf.searchStr[0]) = 0
  303.         THEN
  304.           MTE.info (MTE.noSearchStr);
  305.           RETURN FALSE
  306.         END;
  307.       END;
  308.       *)
  309.     END;
  310.   ELSIF ~moreOptions & 
  311.      ( (exit = MausTauschrsc.smsearchok) OR
  312.        (exit = MausTauschrsc.smfastback) OR
  313.        (exit = MausTauschrsc.smfastahead)
  314.      ) 
  315.   THEN
  316.     (* Bei kleiner Box: šberprfen, ob der Suchstring leer ist *)
  317.     IF (l = 0) THEN
  318.       MTE.info (MTE.emptySearchStr0);
  319.       RETURN FALSE;
  320.     END;
  321.     IF (l > 0)
  322.     THEN
  323.       GetStr (smallPtr, MausTauschrsc.smsearchstr, scrapKonf.searchStr[0]);
  324.       (* Jetzt der eigentliche Test *)
  325.       WHILE ((scrapKonf.searchStr[0,0] = '*') OR (scrapKonf.searchStr[0,0] = '?')) & 
  326.             (MagicStrings.Length (scrapKonf.searchStr[0]) > 0) DO
  327.         MagicStrings.Delete (scrapKonf.searchStr[0], 0, 1);
  328.         IF MagicStrings.Length (scrapKonf.searchStr[0]) = 0
  329.         THEN
  330.           MTE.info (MTE.noSearchStr);
  331.           RETURN FALSE;
  332.         END;
  333.       END;
  334.     END;
  335.   END; (* # Sabbr.. *)
  336.   RETURN TRUE;
  337. END ValidateSearchOpts;
  338.  
  339. PROCEDURE setKonfToBox(VAR konf : SearchHelp.SearchRecordType);
  340. BEGIN
  341.   WITH konf DO
  342.     (* Box initialisieren *)
  343.     SetThem(theForm,
  344.             sSetBits, sClearedBits, setBits, clearBits,
  345.             MausTauschrsc.sflgtop, MausTauschrsc.sflgbot, 
  346.             MausTauschrsc.stflgtop, MausTauschrsc.stflgbot);
  347.     (* Bits setzen *)
  348.   
  349.     SetItem(theForm, MausTauschrsc.showmess, show);
  350.     SetItem(theForm, MausTauschrsc.sforflag, statussearch);
  351.     SetItem(theForm, MausTauschrsc.ssetflag, change);
  352.     SetItem(theForm, MausTauschrsc.askset, ask);
  353.     SetItem(theForm, MausTauschrsc.salltext, searchText);
  354.     SetItem(theForm, MausTauschrsc.smignore, gross);
  355.     SetItem(theForm, MausTauschrsc.nogroupborder, groupsearch);
  356.  
  357.     SetStr(objPtr, MausTauschrsc.searchst1, searchStr[0]);
  358.     SetStr(objPtr, MausTauschrsc.searchst2, searchStr[1]);
  359.     SetStr(objPtr, MausTauschrsc.searchst3, searchStr[2]);
  360.     SetStr(objPtr, MausTauschrsc.searchst4, searchStr[3]);
  361.   END;
  362.   SetPopupStrings(konf);
  363. END setKonfToBox;
  364.  
  365. PROCEDURE getKonfFromBox(exit: INTEGER; VAR konf : SearchHelp.SearchRecordType): BOOLEAN;
  366. BEGIN
  367.   IF ValidateSearchOpts(exit)
  368.   THEN
  369.     WITH konf DO
  370.       GetThem(theForm,
  371.               sSetBits, sClearedBits, setBits, clearBits,
  372.               MausTauschrsc.sflgtop, MausTauschrsc.sflgbot,
  373.               MausTauschrsc.stflgtop, MausTauschrsc.stflgbot);
  374.       show         := isSelect(theForm, MausTauschrsc.showmess);
  375.       gross        := isSelect(theForm, MausTauschrsc.smignore);
  376.       change       := isSelect(theForm, MausTauschrsc.ssetflag);
  377.       statussearch := isSelect(theForm, MausTauschrsc.sforflag);
  378.       ask          := isSelect(theForm, MausTauschrsc.askset);
  379.       searchText   := isSelect(theForm, MausTauschrsc.salltext);
  380.       groupsearch  := isSelect(theForm, MausTauschrsc.nogroupborder);
  381.       GetStr (objPtr, MausTauschrsc.searchst1, searchStr[0]);
  382.       GetStr (objPtr, MausTauschrsc.searchst2, searchStr[1]);
  383.       GetStr (objPtr, MausTauschrsc.searchst3, searchStr[2]);
  384.       GetStr (objPtr, MausTauschrsc.searchst4, searchStr[3]);
  385.       GetPopupStrings(konf);
  386.       RETURN TRUE;
  387.     END;
  388.   END;
  389.   RETURN FALSE;
  390. END getKonfFromBox;
  391.  
  392.  
  393. PROCEDURE bigBoxGetSetValues (tree: ADDRESS; private: ADDRESS; 
  394.                               set: BOOLEAN; exit: INTEGER);
  395.   VAR envPtr : searchEnvPtr;
  396.       i, z   : INTEGER;
  397. BEGIN
  398.   envPtr := ADDRESS(private);
  399.   IF set
  400.   THEN
  401.     WITH envPtr^ DO
  402.       (* Einige Buttons zeigen oder verstecken *)
  403.       
  404.       mtUtils.SetFlag (tree, MausTauschrsc.showmess, MagicAES.HIDETREE, forList);
  405.       IF forList
  406.       THEN 
  407.         mtUtils.InclState(tree, MausTauschrsc.showmess, MagicAES.SELECTED);
  408.       END;
  409.       
  410.       FOR i := MausTauschrsc.logical1 TO MausTauschrsc.bwhere4 DO
  411.         mtUtils.SetState (tree, i, MagicAES.DISABLED, FALSE);
  412.         mtUtils.SetFlag  (tree, i, MagicAES.TOUCHEXIT, TRUE);
  413.       END;
  414.       (* Sonderbehandlung fr Strings anschliežend *)
  415.       mtUtils.SetFlag (tree, MausTauschrsc.searchst2, MagicAES.EDITABLE, TRUE);
  416.       mtUtils.SetFlag (tree, MausTauschrsc.searchst3, MagicAES.EDITABLE, TRUE);
  417.       mtUtils.SetFlag (tree, MausTauschrsc.searchst4, MagicAES.EDITABLE, TRUE);
  418.       mtUtils.SetFlag (tree, MausTauschrsc.searchst2, MagicAES.TOUCHEXIT, FALSE);
  419.       mtUtils.SetFlag (tree, MausTauschrsc.searchst3, MagicAES.TOUCHEXIT, FALSE);
  420.       mtUtils.SetFlag (tree, MausTauschrsc.searchst4, MagicAES.TOUCHEXIT, FALSE);
  421.   
  422.       (* Der braucht eine Sonderbehandlung *)
  423.       mtUtils.SetState (tree, MausTauschrsc.nogroupborder, MagicAES.DISABLED, forList);
  424.       
  425.       (* User-definierte Strings fr die freien Flags setzen.. *)
  426.       mtUtils.SetObjcString (tree, MausTauschrsc.userflg1, UserBLK.ustr1);
  427.       mtUtils.SetObjcString (tree, MausTauschrsc.userflg2, UserBLK.ustr2);
  428.   
  429.       (* Userkeys fr die Flags setzen *)
  430.       FOR z := MausTauschrsc.sflgtop TO MausTauschrsc.sflgbot DO
  431.         mtDials.SetUserkey (tree, z, keyArray[z-MausTauschrsc.sflgtop], {MagicAES.KALT}, TRUE, TRUE);
  432.       END;
  433.       FOR z := MausTauschrsc.stflgtop TO MausTauschrsc.stflgbot DO
  434.         mtDials.SetUserkey (tree, z, keyArray[z-MausTauschrsc.stflgtop], {MagicAES.KALT, MagicAES.KRSHIFT}, TRUE, TRUE);
  435.       END;
  436.       (* Userkeys fr die Konfigs setzen *)
  437.       FOR z := MausTauschrsc.searchkonf1 TO MausTauschrsc.searchkonf10 DO
  438.         mtDials.SetUserkey (tree, z, numArray[z-MausTauschrsc.searchkonf1], {MagicAES.KALT}, TRUE, TRUE);
  439.       END;
  440.     END;
  441.   ELSE
  442.     exit := INTEGER(BITSET(exit) - {15});
  443.     envPtr^.exitBut := exit;
  444.   END;
  445. END bigBoxGetSetValues;
  446.  
  447. PROCEDURE bigBoxButton (tree: ADDRESS; private: ADDRESS; button: INTEGER;
  448.                         mx, my : INTEGER; kstate: BITSET; clicks: INTEGER): BOOLEAN;
  449.   VAR envPtr : searchEnvPtr;
  450.       i      : INTEGER;
  451.       exit   : INTEGER;
  452.       x, y   : INTEGER;
  453.       t      : Trick;
  454.       select : INTEGER;
  455.       z      : INTEGER;
  456.       again  : BOOLEAN;
  457.       scrapkonf : SearchHelp.SearchRecordType;
  458. BEGIN
  459.   envPtr := ADDRESS(private);
  460.   WITH envPtr^ DO
  461.     exit := INTEGER(BITSET(button) - {15});
  462.     
  463.     again := TRUE;
  464.     CASE exit OF
  465.       MausTauschrsc.sok,
  466.       MausTauschrsc.sabbr,
  467.       MausTauschrsc.searchstartahead,
  468.       MausTauschrsc.searchstartback,
  469.       MausTauschrsc.lessoptions : again := FALSE;
  470.     | MausTauschrsc.showmess  :
  471.         Switch(MausTauschrsc.showmess, ~isSelect(tree, MausTauschrsc.showmess));
  472.         IF ~isSelect(tree, MausTauschrsc.showmess) THEN
  473.           Switch(MausTauschrsc.askset, FALSE);
  474.         END;
  475.     | MausTauschrsc.askset:
  476.         Switch(MausTauschrsc.askset, ~isSelect(tree, MausTauschrsc.askset));
  477.         IF ~isSelect(tree, MausTauschrsc.showmess) THEN
  478.           Switch(MausTauschrsc.showmess, ~isSelect(tree, MausTauschrsc.showmess));
  479.         END;
  480.     | MausTauschrsc.logical1,
  481.       MausTauschrsc.logical2,
  482.       MausTauschrsc.logical3 :
  483.         MagicAES.ObjcOffset (tree, exit, x, y);
  484.         t := ADR (objPtr^[exit].obState);
  485.         select := mtPopups.TreePopup (logical, x, y, ORD(t^.hi))-1;
  486.         IF select >= 0 THEN
  487.           t^.hi := CHR(select);
  488.           SetXXString(tree, exit, logical, select);
  489.           WinDials.WinDialDraw (tree, exit, 0, v.r, FALSE);
  490.         END;
  491.     | MausTauschrsc.where1, 
  492.       MausTauschrsc.where2, 
  493.       MausTauschrsc.where3, 
  494.       MausTauschrsc.where4 :
  495.         MagicAES.ObjcOffset (tree, exit, x, y);
  496.         t := ADR (objPtr^[exit].obState);
  497.         select := mtPopups.TreePopup (searchwhere, x, y, ORD(t^.hi))-1;
  498.         IF select >= 0 THEN
  499.           t^.hi := CHR(select);
  500.           SetXXString(tree, exit, searchwhere, select);
  501.           WinDials.WinDialDraw (tree, exit, 0, v.r, FALSE);
  502.         END;
  503.     | MausTauschrsc.blogical1, 
  504.       MausTauschrsc.blogical2,
  505.       MausTauschrsc.blogical3:
  506.         t := ADR (objPtr^[exit-1].obState);
  507.         t^.hi := CHR((ORD(t^.hi)+1) MOD 2);
  508.         select := ORD (t^.hi);
  509.         SetXXString(tree, exit-1, logical, select);
  510.         WinDials.WinDialDraw (tree, exit-1, 0, v.r, FALSE); 
  511.     | MausTauschrsc.bwhere1, 
  512.       MausTauschrsc.bwhere2, 
  513.       MausTauschrsc.bwhere3, 
  514.       MausTauschrsc.bwhere4 :
  515.         t := ADR (objPtr^[exit-1].obState);
  516.         t^.hi := CHR((ORD(t^.hi)+1) MOD 7);
  517.         select := ORD (t^.hi);
  518.         SetXXString(tree, exit-1, searchwhere, select);
  519.         WinDials.WinDialDraw (tree, exit-1, 0, v.r, FALSE);
  520.     | MausTauschrsc.searchhelp:
  521.         CatHelp.DoHelp (CatHelp.searchdial);
  522.         mtUtils.ExclState(tree, exit, MagicAES.SELECTED);
  523.         WinDials.WinDialDraw (tree, exit, 0, v.r, FALSE);
  524.     | MausTauschrsc.searchkonf1..MausTauschrsc.searchkonf10 :
  525.         IF clicks > 1 THEN
  526.           IF objPtr^[MausTauschrsc.searchst1].obSpec.TedPtr^.tePtext^[0] = '@' THEN
  527.             l := 0;
  528.           ELSE
  529.             l := MagicStrings.Length(objPtr^[MausTauschrsc.searchst1].obSpec.TedPtr^.tePtext^);
  530.           END;
  531.           IF getKonfFromBox(exit, scrapkonf)
  532.           THEN
  533.             v.bool := SearchHelp.setKonf(exit-MausTauschrsc.searchkonf1, scrapkonf)
  534.           END;
  535.         ELSE
  536.           IF SearchHelp.getKonf(exit - MausTauschrsc.searchkonf1, suchVar) THEN
  537.             setKonfToBox(suchVar);
  538.             IF lastKonfig # -1 THEN              mtUtils.ExclState(tree, lastKonfig, MagicAES.SELECTED);            END;            lastKonfig := exit;            mtUtils.InclState(tree, exit, MagicAES.SELECTED);
  539.             WinDials.WinDialDraw(tree, 0, 200, v.r, FALSE);
  540.           END;
  541.         END;
  542.     ELSE
  543.       again := TRUE;
  544.     END;
  545.   END;
  546.   RETURN ~again;
  547. END bigBoxButton;  
  548.  
  549. PROCEDURE SearchDial(VAR suchVar : SearchHelp.SearchRecordType; forList: BOOLEAN):INTEGER;
  550. (* Die Vars sind gleichzeitig Eingabeparameter, damit werden die einzelnen
  551.    Punkte gefllt, muž dem alten Aussehen entsprechen *)
  552.  
  553. VAR exit                : INTEGER;
  554.     again               : BOOLEAN;
  555.     gross               : BOOLEAN;
  556.     OptionSwitch        : BOOLEAN;
  557.  
  558.  
  559.  
  560.   PROCEDURE setKonfToSmallBox(VAR konf : SearchHelp.SearchRecordType);
  561.   BEGIN
  562.     WITH konf DO
  563.       SetItem(smallForm, MausTauschrsc.smgrosseqklein, gross);
  564.       SetStr(smallForm, MausTauschrsc.smsearchstr, searchStr[0]);
  565.     END;
  566.   END setKonfToSmallBox;
  567.   
  568.   PROCEDURE getKonfFromSmallBox(VAR konf : SearchHelp.SearchRecordType);
  569.   BEGIN
  570.     WITH konf DO
  571.       (* alle Bitsets sind unver„ndert *)
  572.       show         := TRUE;
  573.       gross        := isSelect(smallForm, MausTauschrsc.smgrosseqklein);
  574.       change       := FALSE;
  575.       statussearch := FALSE;
  576.       (* ask ist unver„ndert *)
  577.       searchText   := TRUE;
  578.       groupsearch  := FALSE; (* keine gruppenbergreifende Suche *)
  579.       GetStr (smallForm, MausTauschrsc.smsearchstr, searchStr[0]);
  580.       searchStr[1] := '';
  581.       (* zweiten String ausschalten, damit nur nach dem ersten gesucht wird *)
  582.       suchVar.wo[0] := SearchHelp.sUEBERALL;
  583.       (* Die restlichen Strings sind unver„ndert, dto. Logik und Suchorte *)
  584.     END;
  585.   END getKonfFromSmallBox;
  586.   
  587.  
  588. (*TYPE SetProc = PROCEDURE(INTEGER, BOOLEAN); *)
  589.  
  590.   PROCEDURE smallHandle(suchVar : SearchHelp.SearchRecordType):INTEGER;
  591.   (* Kleine Suchbox bearbeiten *)
  592.   VAR exit   : INTEGER;
  593.   BEGIN
  594.     REPEAT
  595.       exit := WinDials.WinDialDo (smallForm, 0);
  596.       exit := INTEGER(BITSET(exit) - {15});
  597.       IF exit = MausTauschrsc.smhelp THEN
  598.         CatHelp.DoHelp (CatHelp.smallsearch);
  599.       END;
  600.     UNTIL exit # MausTauschrsc.smhelp;
  601.     RETURN exit
  602.   END smallHandle;
  603.  
  604.  
  605.   PROCEDURE FormHandle(suchVar : SearchHelp.SearchRecordType; forList: BOOLEAN):INTEGER;
  606.   (* grosse Suchbox bearbeiten *)
  607.   VAR search: searchEnv;
  608.   BEGIN
  609.     search.suchVar := suchVar;
  610.     search.forList := forList;
  611.     
  612.     IF ~WinDials.OpenWinDial (theForm, TRUE, 
  613.                               bigBoxGetSetValues,
  614.                               bigBoxGetSetValues,
  615.                               bigBoxButton,
  616.                               WinDials.defDraw,
  617.                               "",
  618.                               ADR(search))
  619.     THEN
  620.       MTE.noWinDialAlert();
  621.       RETURN -1;
  622.     END;
  623.     
  624.     WinDials.WinDialHandleEvents();
  625.     
  626.     suchVar := search.suchVar;
  627.     mtUtils.ExclState(theForm, search.exitBut, MagicAES.SELECTED);
  628.     RETURN search.exitBut;
  629.   
  630.   END FormHandle;
  631.  
  632. BEGIN
  633.   objPtr   := MausTauschrsc.TreeAddr^[MausTauschrsc.suchbox];
  634.   smallPtr := MausTauschrsc.TreeAddr^[MausTauschrsc.smallsuchbox];
  635.   ConfVars.GetConfDefBool(cMoreOptions, moreOptions, FALSE);
  636.  
  637.   scrapKonf := suchVar;
  638.   
  639.   (* Alten Inhalt in die Boxen kopieren *)
  640.   setKonfToBox(scrapKonf);
  641.   setKonfToSmallBox(scrapKonf);
  642.  
  643.   REPEAT
  644.     again        := FALSE;
  645.     OptionSwitch := FALSE;
  646.  
  647.     IF moreOptions THEN
  648.       exit := FormHandle(scrapKonf, forList);
  649.       IF exit < 0
  650.       THEN 
  651.         (* Fehler aufgreten *)
  652.         again := FALSE;
  653.       ELSIF exit = MausTauschrsc.lessoptions THEN
  654.         again         := TRUE;
  655.         moreOptions   := FALSE; 
  656.         OptionSwitch  := TRUE;
  657.         v.bool        := ConfVars.SetConfigBool (cMoreOptions, FALSE);
  658.  
  659.         IF getKonfFromBox(exit, scrapKonf)
  660.         THEN
  661.           setKonfToSmallBox(scrapKonf);
  662.         END;
  663.       ELSE
  664.         IF objPtr^[MausTauschrsc.searchst1].obSpec.TedPtr^.tePtext^[0] = '@' THEN
  665.           l := 0;
  666.         ELSE
  667.           l := MagicStrings.Length(objPtr^[MausTauschrsc.searchst1].obSpec.TedPtr^.tePtext^);
  668.         END;
  669.       END;
  670.     ELSE
  671.       exit := smallHandle(scrapKonf);
  672.       IF exit = MausTauschrsc.smmoreoptions THEN
  673.         again         := TRUE;
  674.         moreOptions   := TRUE; 
  675.         OptionSwitch  := TRUE;
  676.         v.bool        := ConfVars.SetConfigBool (cMoreOptions, TRUE);
  677.         scrapKonf.gross := isSelect(smallForm, MausTauschrsc.smgrosseqklein);
  678.         GetStr (smallForm, MausTauschrsc.smsearchstr, scrapKonf.searchStr[0]);
  679.         setKonfToBox(scrapKonf);
  680.       ELSE
  681.         IF smallPtr^[MausTauschrsc.smsearchstr].obSpec.TedPtr^.tePtext^[0] = '@' THEN
  682.           l := 0;
  683.         ELSE
  684.           l := MagicStrings.Length(smallPtr^[MausTauschrsc.smsearchstr].obSpec.TedPtr^.tePtext^);
  685.         END;
  686.       END;
  687.     END;
  688.     
  689.     IF ~OptionSwitch
  690.     THEN
  691.       again := ~ValidateSearchOpts(exit);
  692.     END;
  693.  
  694.   UNTIL ~again OR 
  695.         (moreOptions  & (exit = MausTauschrsc.sabbr)) OR
  696.         (~moreOptions & (exit = MausTauschrsc.smsearchabbruch));
  697.   IF moreOptions THEN
  698.     IF exit = MausTauschrsc.sabbr THEN
  699.       RETURN -1
  700.     ELSIF (exit = MausTauschrsc.sok) OR
  701.           (exit = MausTauschrsc.searchstartahead) OR
  702.           (exit = MausTauschrsc.searchstartback) THEN
  703.       v.bool := getKonfFromBox(exit, suchVar);
  704.       IF exit = MausTauschrsc.searchstartahead THEN
  705.         RETURN FASTAHEAD
  706.       ELSIF exit = MausTauschrsc.searchstartback THEN
  707.         RETURN FASTBACK
  708.       ELSE
  709.         RETURN MAX(INTEGER)
  710.       END;
  711.     END;
  712.   ELSE
  713.     IF exit = MausTauschrsc.smsearchabbruch THEN
  714.       RETURN -1
  715.     ELSIF (exit = MausTauschrsc.smsearchok) OR
  716.           (exit = MausTauschrsc.smfastahead) OR
  717.           (exit = MausTauschrsc.smfastback) THEN
  718.       getKonfFromSmallBox(suchVar);
  719.       IF exit = MausTauschrsc.smfastahead THEN
  720.         RETURN FASTAHEAD
  721.       ELSIF exit = MausTauschrsc.smfastback THEN
  722.         RETURN FASTBACK
  723.       ELSE
  724.         RETURN MAX(INTEGER)
  725.       END;
  726.     ELSE
  727.       RETURN exit;
  728.     END;
  729.   END;
  730. END SearchDial;
  731.  
  732. TYPE    flagVars    = RECORD
  733.                         possible    : DialActionSet;
  734.                         setBits, clearBits : BITSET;
  735.                         whatAction  : DialAction;
  736.                         exitBut     : INTEGER;
  737.                       END;
  738.         flagVarPtr  = POINTER TO flagVars;
  739.  
  740. PROCEDURE flagButton (tree: ADDRESS; private: ADDRESS; button: INTEGER;
  741.                         mx, my : INTEGER; kstate: BITSET; clicks: INTEGER): BOOLEAN;
  742.   VAR res : INTEGER;
  743. BEGIN
  744.   res := INTEGER(BITSET(button) - {15});
  745.   IF (res = MausTauschrsc.sflagsok) OR (res = MausTauschrsc.sabbruch) THEN 
  746.     mtUtils.ExclState (tree, res, MagicAES.SELECTED);
  747.     RETURN TRUE;
  748.   END;
  749.   RETURN FALSE;
  750. END flagButton;
  751.  
  752. PROCEDURE flagGetSetValues (tree: ADDRESS; private: ADDRESS; 
  753.                             set: BOOLEAN; exit: INTEGER);
  754.   VAR flgPtr        : flagVarPtr;
  755.       z, obj        : INTEGER;
  756.       sBit1, sBit2  : BITSET;
  757. BEGIN
  758.   flgPtr := private;
  759.   IF set
  760.   THEN
  761.     WITH flgPtr^ DO
  762.       mtUtils.SetObjcString (tree, MausTauschrsc.fuserflag1, UserBLK.ustr1);
  763.       mtUtils.SetObjcString (tree, MausTauschrsc.fuserflag2, UserBLK.ustr2);
  764.       SetBits(tree, setBits, clearBits, MausTauschrsc.topflag, MausTauschrsc.botflag);
  765.       mtUtils.SetState(tree, MausTauschrsc.sactual,   MagicAES.DISABLED, ~(ChangeMsg IN possible));
  766.       mtUtils.SetState(tree, MausTauschrsc.streedown, MagicAES.DISABLED, ~(ChangeTreeDown IN possible));
  767.       mtUtils.SetState(tree, MausTauschrsc.stree,     MagicAES.DISABLED, ~(ChangeTree IN possible));
  768.       mtUtils.SetState(tree, MausTauschrsc.sselected, MagicAES.DISABLED, ~(ChangeSelected IN possible));
  769.     
  770.       IF ~(whatAction IN possible)
  771.       THEN
  772.         whatAction := ChangeMsg;
  773.         WHILE ~(whatAction IN possible) & (whatAction < ChangeSelected) DO
  774.           INC(whatAction)
  775.         END;
  776.       END;
  777.       CASE whatAction OF
  778.         ChangeMsg       : obj := MausTauschrsc.sactual; |
  779.         ChangeTreeDown  : obj := MausTauschrsc.streedown; |
  780.         ChangeTree      : obj := MausTauschrsc.stree; |
  781.         ChangeSelected  : obj := MausTauschrsc.sselected; |
  782.       ELSE
  783.         obj := MausTauschrsc.sactual;
  784.       END;
  785.       mtUtils.InclState(tree, obj,   MagicAES.SELECTED);
  786.  
  787.       FOR z := MausTauschrsc.topflag TO MausTauschrsc.botflag DO
  788.         mtDials.SetUserkey (tree, z, keyArray[z-MausTauschrsc.topflag], {MagicAES.KALT}, TRUE, TRUE);
  789.       END;
  790.       
  791.     END;
  792.   ELSE
  793.     WITH flgPtr^ DO
  794.       exit := INTEGER(BITSET(exit) - {15});
  795.       exitBut := exit;
  796.       IF exit=MausTauschrsc.sflagsok THEN 
  797.         setBits   := GetBits (tree, MausTauschrsc.topflag, MausTauschrsc.botflag, mtUtils.SETNEW);
  798.         clearBits := GetBits (tree, MausTauschrsc.topflag, MausTauschrsc.botflag, mtUtils.CLEAR);
  799.         IF    mtUtils.InState(tree, MausTauschrsc.sactual,   MagicAES.SELECTED) THEN
  800.           mtUtils.ExclState(tree, MausTauschrsc.sactual,   MagicAES.SELECTED);
  801.           whatAction := ChangeMsg;
  802.         ELSIF mtUtils.InState(tree, MausTauschrsc.streedown, MagicAES.SELECTED) THEN
  803.           mtUtils.ExclState(tree, MausTauschrsc.streedown, MagicAES.SELECTED);
  804.           whatAction := ChangeTreeDown;
  805.         ELSIF mtUtils.InState(tree, MausTauschrsc.stree,     MagicAES.SELECTED) THEN
  806.           mtUtils.ExclState(tree, MausTauschrsc.stree,   MagicAES.SELECTED);
  807.           whatAction := ChangeTree;
  808.         ELSIF mtUtils.InState(tree, MausTauschrsc.sselected, MagicAES.SELECTED) THEN
  809.           mtUtils.ExclState(tree, MausTauschrsc.sselected,   MagicAES.SELECTED);
  810.           whatAction := ChangeSelected;
  811.         END;
  812.       END;
  813.       mtUtils.ExclState (tree, exit, MagicAES.SELECTED);
  814.     
  815.       mtUtils.ExclState(tree, MausTauschrsc.sactual,   MagicAES.DISABLED);
  816.       mtUtils.ExclState(tree, MausTauschrsc.streedown, MagicAES.DISABLED);
  817.       mtUtils.ExclState(tree, MausTauschrsc.stree,     MagicAES.DISABLED);
  818.       mtUtils.ExclState(tree, MausTauschrsc.sselected, MagicAES.DISABLED);
  819.     
  820.       mtUtils.ExclState(tree, MausTauschrsc.sactual,   MagicAES.SELECTED);
  821.       mtUtils.ExclState(tree, MausTauschrsc.streedown, MagicAES.SELECTED);
  822.       mtUtils.ExclState(tree, MausTauschrsc.stree,     MagicAES.SELECTED);
  823.       mtUtils.ExclState(tree, MausTauschrsc.sselected, MagicAES.SELECTED);
  824.     END;
  825.   END;
  826. END flagGetSetValues;
  827.  
  828. PROCEDURE FlagDial(possible : DialActionSet; 
  829.                    VAR setBits, clearBits : BITSET;
  830.                    VAR whatAction : DialAction):BOOLEAN;
  831. (* Fr die Flagaktionen. Gibt zurck, ob der User ok angew„hlt hat und den Status   *)
  832. (* der Bits sowie die ber die Radiobuttons gew„hlte Aktion                         *)
  833. VAR flagBox : ADDRESS;
  834.     flags   : flagVars;
  835. BEGIN
  836.   flags.possible := possible;
  837.   flags.setBits := setBits;
  838.   flags.clearBits := clearBits;
  839.   flags.whatAction := whatAction;
  840.   flagBox := MausTauschrsc.TreeAddr^[MausTauschrsc.flag2box];
  841.   IF ~WinDials.OpenWinDial (flagBox, TRUE, 
  842.                             flagGetSetValues,
  843.                             flagGetSetValues,
  844.                             flagButton,
  845.                             WinDials.defDraw,
  846.                             "",
  847.                             ADR(flags))
  848.   THEN
  849.     MTE.noWinDialAlert();
  850.     RETURN FALSE;
  851.   END;
  852.   WinDials.WinDialHandleEvents();
  853.   IF flags.exitBut = MausTauschrsc.sflagsok
  854.   THEN
  855.     setBits := flags.setBits;
  856.     clearBits := flags.clearBits;
  857.     whatAction := flags.whatAction;
  858.     v.bool := ConfVars.SetConfigInt (cFlagSetBits, INTEGER (setBits));
  859.     v.bool := ConfVars.SetConfigInt (cFlagClearBits, INTEGER (clearBits));
  860.     v.bool := ConfVars.SetConfigInt (cFlagSelection, INTEGER(whatAction));
  861.   END;
  862.   
  863.   RETURN flags.exitBut = MausTauschrsc.sflagsok;
  864. END FlagDial;
  865.  
  866. (*
  867. PROCEDURE FlagDial(possible : DialActionSet; 
  868.                    VAR setBits, clearBits : BITSET;
  869.                    VAR whatAction : DialAction):BOOLEAN;
  870. (* Fr die Flagaktionen. Gibt zurck, ob der User ok angew„hlt hat und den Status   *)
  871. (* der Bits sowie die ber die Radiobuttons gew„hlte Aktion                         *)
  872. VAR but : INTEGER;
  873.     z   : INTEGER;
  874.     flagBox : ADDRESS;
  875.     sBit1, sBit2 : BITSET;
  876. BEGIN
  877.   flagBox := MausTauschrsc.TreeAddr^[MausTauschrsc.flag2box];
  878.   IF ~mtDials.NewDial (flagBox) THEN MTE.noMemAlert (); RETURN FALSE END;
  879.   mtUtils.SetObjcString (flagBox, MausTauschrsc.fuserflag1, UserBLK.ustr1);
  880.   mtUtils.SetObjcString (flagBox, MausTauschrsc.fuserflag2, UserBLK.ustr2);
  881.   SetThem(flagBox,
  882.           setBits, clearBits, sBit1, sBit2, 
  883.           MausTauschrsc.topflag, MausTauschrsc.botflag, 
  884.           1, 0);
  885.   mtUtils.SetState(flagBox, MausTauschrsc.sactual,   MagicAES.DISABLED, ~(ChangeMsg IN possible));
  886.   mtUtils.SetState(flagBox, MausTauschrsc.streedown, MagicAES.DISABLED, ~(ChangeTreeDown IN possible));
  887.   mtUtils.SetState(flagBox, MausTauschrsc.stree,     MagicAES.DISABLED, ~(ChangeTree IN possible));
  888.   mtUtils.SetState(flagBox, MausTauschrsc.sselected, MagicAES.DISABLED, ~(ChangeSelected IN possible));
  889.  
  890.   IF ~(whatAction IN possible)
  891.   THEN
  892.     whatAction := ChangeMsg;
  893.     WHILE ~(whatAction IN possible) & (whatAction < ChangeSelected) DO
  894.       INC(whatAction)
  895.     END;
  896.   END;
  897.   IF    whatAction = ChangeMsg THEN
  898.     mtUtils.InclState(flagBox, MausTauschrsc.sactual,   MagicAES.SELECTED) 
  899.   ELSIF whatAction = ChangeTreeDown THEN
  900.     mtUtils.InclState(flagBox, MausTauschrsc.streedown, MagicAES.SELECTED) 
  901.   ELSIF whatAction = ChangeTree THEN
  902.     mtUtils.InclState(flagBox, MausTauschrsc.stree,     MagicAES.SELECTED) 
  903.   ELSIF whatAction = ChangeSelected THEN
  904.     mtUtils.InclState(flagBox, MausTauschrsc.sselected, MagicAES.SELECTED) 
  905.   END;
  906.  
  907.   mtDials.DialCenter (flagBox, mtDials.CSCREEN, 0, 0, v.r);
  908.   mtDials.DialForm(flagBox, mtDials.DSTART, v.r, v.r);
  909.   FOR z := MausTauschrsc.topflag TO MausTauschrsc.botflag DO
  910.     mtDials.SetUserkey (flagBox, z, keyArray[z-MausTauschrsc.topflag], {MagicAES.KALT}, TRUE, TRUE);
  911.   END;
  912.   mtDials.DialDraw(flagBox, 0, 200, v.r, FALSE);
  913.   LOOP
  914.     but := mtDials.DialDo (flagBox, 0);
  915.     but := INTEGER (BITSET(but)-{15});
  916.     IF (but = MausTauschrsc.sflagsok) OR (but = MausTauschrsc.sabbruch) THEN EXIT END;
  917.   END;
  918.   IF but=MausTauschrsc.sflagsok THEN 
  919.     GetThem(flagBox,
  920.             setBits, clearBits, sBit1, sBit2,
  921.             MausTauschrsc.topflag, MausTauschrsc.botflag,
  922.             1,0);
  923.     IF    mtUtils.InState(flagBox, MausTauschrsc.sactual,   MagicAES.SELECTED) THEN
  924.       mtUtils.ExclState(flagBox, MausTauschrsc.sactual,   MagicAES.SELECTED);
  925.       whatAction := ChangeMsg;
  926.     ELSIF mtUtils.InState(flagBox, MausTauschrsc.streedown, MagicAES.SELECTED) THEN
  927.       mtUtils.ExclState(flagBox, MausTauschrsc.streedown, MagicAES.SELECTED);
  928.       whatAction := ChangeTreeDown;
  929.     ELSIF mtUtils.InState(flagBox, MausTauschrsc.stree,     MagicAES.SELECTED) THEN
  930.       mtUtils.ExclState(flagBox, MausTauschrsc.stree,   MagicAES.SELECTED);
  931.       whatAction := ChangeTree;
  932.     ELSIF mtUtils.InState(flagBox, MausTauschrsc.sselected, MagicAES.SELECTED) THEN
  933.       mtUtils.ExclState(flagBox, MausTauschrsc.sselected,   MagicAES.SELECTED);
  934.       whatAction := ChangeSelected;
  935.     END;
  936.   END;
  937.   mtUtils.ExclState (flagBox, but, MagicAES.SELECTED);
  938.   mtDials.DialForm(flagBox, mtDials.DFINISH, v.r, v.r);
  939.   mtDials.DisposeDial (flagBox);
  940.  
  941.   mtUtils.ExclState(flagBox, MausTauschrsc.sactual,   MagicAES.DISABLED);
  942.   mtUtils.ExclState(flagBox, MausTauschrsc.streedown, MagicAES.DISABLED);
  943.   mtUtils.ExclState(flagBox, MausTauschrsc.stree,     MagicAES.DISABLED);
  944.   mtUtils.ExclState(flagBox, MausTauschrsc.sselected, MagicAES.DISABLED);
  945.  
  946.   mtUtils.ExclState(flagBox, MausTauschrsc.sactual,   MagicAES.SELECTED);
  947.   mtUtils.ExclState(flagBox, MausTauschrsc.streedown, MagicAES.SELECTED);
  948.   mtUtils.ExclState(flagBox, MausTauschrsc.stree,     MagicAES.SELECTED);
  949.   mtUtils.ExclState(flagBox, MausTauschrsc.sselected, MagicAES.SELECTED);
  950.  
  951.   RETURN but = MausTauschrsc.sflagsok;
  952. END FlagDial;
  953. *)
  954.  
  955. PROCEDURE DoSearchDial(forList: BOOLEAN):INTEGER;
  956. (* Ruft die Suchbox auf; Rckgabe < 0 -> User hat Abbruch gedrckt *)
  957. (* sonst noch m”glich: ZSearchDial.FASTAHEAD, ZSearchDial.FASTBACK *)
  958. VAR res : INTEGER;
  959. BEGIN
  960.   res := SearchDial(SearchHelp.suchVar, forList);
  961.   RETURN res;
  962. END DoSearchDial;
  963.  
  964. BEGIN
  965.   init := TRUE;
  966.   lastKonfig := -1;
  967. END ZSearchDial.
  968.